########################################################################
## basic JRun properties
########################################################################

jrun.version=3.01.5870
jrun.date=Tue Oct  3 18:16:03  2000

########################################################################
## Java VM Settings
########################################################################

# path to java virtual machine.  Launchers will use system PATH if necessary
#java.exe=C:\\CFusion\\jre\\bin\\javaw.exe

# extra virtual machine args
java.args={user.javaargs} {ejb.javaargs} {servlet.javaargs}
user.javaargs=

# virtual machine arguments for doing debugging
java.args.debug=

# shared library path for JNI libraries
java.jnipath={user.jnipath};{ejb.jnipath};{servlet.jnipath}

# Classpath
#
# The CLASSPATH consists of four components:
#
#    jrun.classpath     - Classes and jars required for JRun itself
#    servlet.classpath  - Servlet/JSP related components.
#    ejb.classpath      - EJB related JRun components.
#    user.classpath     - User-specified classes and jars used by
#                         all the user's apps/JVMs.  
#                         
# A simple wildcard mechanism is used for the classpath
# variables.  If a directory is supplied in the classpath, each JAR
# file contained in the directory is automatically added after the
# directory in the classpath before invoking JRun.
#
java.classpath={jrun.classpath};{user.classpath};{ejb.classpath};{servlet.classpath}
jrun.classpath={jrun.rootdir}/lib/ext;{jrun.rootdir}/lib/jrun.jar;{jrun.rootdir}/lib/install.jar;
user.classpath={jrun.rootdir}/servers/lib;{jrun.server.rootdir}/lib

# Redirection of Primordial output and error streams.  Run jrun
# program with -console argument to prevent standard out and error
# from being redirected to these files.
java.System.out={jrun.rootdir}/logs/{jrun.server.name}-out.log
java.System.err={jrun.rootdir}/logs/{jrun.server.name}-err.log

########################################################################
## JRun Services
########################################################################

# list of services to start
jrun.services=scheduler,logging,monitor,license,control,{ejb.services},{servlet.services}

# service aliases -- names of various services to use
jrun.Logger=logging
jrun.License=license
jrun.Scheduler=scheduler


########################################################################
## logging services
########################################################################

# Service class & info
logging.class=allaire.jrun.logging.LoggingService
logging.format={date MM/dd HH:mm:ss} {log.level} ({log.name}) {log.message}

# Logging levels, as a comma separated list.
# Possible values are any combination of: debug, info, warning, error, metrics
logging.loglevel=info,warning,error

# Define the logging listeners
logging.listeners=threadedlogger

# Threaded logger. Clients post log events to a queue which are
# processed by a background thread. The log event can be posted
# to any number of logging listeners
logging.threadedlogger.class=allaire.jrun.logging.ThreadedLogger
logging.threadedlogger.listeners=filelogwriter

# Define the logging events available
logging.infoevent=allaire.jrun.logging.InfoLogEvent
logging.debugevent=allaire.jrun.logging.DebugLogEvent
logging.warningevent=allaire.jrun.logging.WarningLogEvent
logging.errorevent=allaire.jrun.logging.ErrorLogEvent

# Dispatch logger. This logging listener will route each type of
# logging event to a potentially unique listener.
logging.dispatchlogger.class=allaire.jrun.logging.DispatchLogger
logging.dispatchlogger.events={logging.infoevent},{logging.debugevent},{logging.warningevent},{logging.errorevent}
logging.dispatchlogger.destinations=filelogwriter,filelogwriter,filelogwriter,filelogwriter

# Screen log writer. All log events are simply sent to stdout
logging.screenlogger.class=allaire.jrun.logging.ScreenLogWriter

# File log writer. A single file log writer can be used for all event types or,
# when used with the DispatchLogger, each event type can use its own
# log. The filename can consist of both static variables (such as
# {install.rootdir}) and dynamic variables (such as {date}, {hour}, 
# {day}, {month}, or {year}). When using dynamic variables the name
# of the log file will be changed as the timestamps of the log
# events change.
logging.filelogwriter.class=allaire.jrun.logging.FileLogWriter
logging.filelogwriter.filename={jrun.rootdir}/logs/{jrun.server.name}-event.log
logging.filelogwriter.rotationsize=100000
logging.filelogwriter.rotationfiles=5

########################################################################
## scheduler services
########################################################################

scheduler.class=allaire.jrun.scheduler.SchedulerService


########################################################################
## monitor services
########################################################################

#
# Network Service metrics. Current services are 'web' and 'jcp'
#    listenTh   number of threads listening for a new connection
#    idleTh     threads waiting for a new request
#    delayTh    threads waiting to run
#    busyTh     threads currently running
#    totalTh    total worker thread count
#    delayRq    number of requests delayed due to high concurrency
#    droppedRq  requests dropped
#    handledRq  requests handled
#    delayMs    ms spent in delay state
#    bytesIn    number of bytes read from request
#    bytesOut   number of bytes written to response
#
# e.g. delayMs/busyTh = avg. response time before executing request
#
# Other metrics:
#    freeMem    KB of free memory
#    totalMem   total KB (in use and free)
#    sessions   current number of active sessions
#
# Note that metrics are enabled when the logging.loglevel includes 'metrics'
#

monitor.class=allaire.jrun.metrics.MetricsLogger
monitor.interval=60

# The maximum number of metrics snapshot history entries to maintain. The default is 10.
monitor.max.history=10

# fill this in with a monitor format from below
monitor.format={monitor.combined-format}

monitor.web-format=(web) Heap={totalMemory}KB Listen={web.listenTh} Idle={web.idleTh} Queued={web.delayTh} Busy={web.busyTh} Total={web.totalTh} Requests (count/total ms)={web.handledRq}/{web.handledMs} Delayed={web.delayRq} TotalDelay={web.delayMs} BytesIn={web.bytesIn} BytesOut={web.bytesOut} Sessions (active/in memory)={sessions}/{sessionsInMem}
monitor.web-short-format=(web) Busy={web.busyTh} Total={web.totalTh} Requests={web.handledRq} TotalDelay={web.delayMs}

monitor.jcp-format=(jcp) Heap={totalMemory}KB Listen={jcp.listenTh} Idle={jcp.idleTh} Queued={jcp.delayTh} Busy={jcp.busyTh} Total={jcp.totalTh} Requests (count/total ms)={jcp.handledRq}/{jcp.handledMs} Delayed={jcp.delayRq} TotalDelay={jcp.delayMs} BytesIn={jcp.bytesIn} BytesOut={jcp.bytesOut} Sessions (active/in memory)={sessions}/{sessionsInMem}
monitor.jcp-short-format=(jcp) Busy={jcp.busyTh} Total={jcp.totalTh} Requests={jcp.handledRq} TotalDelay={jcp.delayMs}

monitor.combined-format=(jcp+web) Heap={totalMemory}KB Listen={{jcp.listenTh}+{web.listenTh}} Idle={{jcp.idleTh}+{web.idleTh}} Queued={{jcp.delayTh}+{web.delayTh}} Busy={{jcp.busyTh}+{web.busyTh}} Total={{jcp.totalTh}+{web.totalTh}} Requests (count/total ms)={{jcp.handledRq}+{web.handledRq}}/{{jcp.handledMs}+{web.handledMs}} Delayed={{jcp.delayRq}+{web.delayRq}} TotalDelay={{jcp.delayMs}+{web.delayMs}} BytesIn={{jcp.bytesIn}+{web.bytesIn}} BytesOut={{jcp.bytesOut}+{web.bytesOut}} Sessions (active/in memory)={sessions}/{sessionsInMem}


########################################################################
## license manager services
########################################################################

# service class & info
license.class=allaire.jrun.license.LicenseService
license.licensefile={jrun.rootdir}/lib/serial_number.properties

########################################################################
## control services
########################################################################

# service class & info
control.class=allaire.jrun.control.ControlService

# endpoint properties
control.endpoint.main.bindaddress=127.0.0.1
control.endpoint.main.interface=*
control.endpoint.main.port=
control.endpoint.main.timeout=300
control.endpoint.main.min.threads=1
control.endpoint.main.active.threads=1
control.endpoint.main.max.threads=1

# number of seconds to wait for non-daemon threads to exit before
# forcing a shutdown using System.exit.
#   - use 0 to indicate that System.exit should not be called.
control.shutdown.timeout=5


# Web Application XML DTD mappings. This allows DTD URLs specified
# web.xml, application.xml, and taglib.dtd to be mapped to a local physical
# file location
webapp.dtd-mapping.web-app_2_2.dtd={jrun.rootdir}/lib/web-app_2_2.dtd
webapp.dtd-mapping.application_1_2.dtd={jrun.rootdir}/lib/application_1_2.dtd
webapp.dtd-mapping.web-jsptaglibrary_1_1.dtd={jrun.rootdir}/lib/web-jsptaglibrary_1_1.dtd
# List of services to start for Servlet/JSP support
servlet.services={servlet.webapps}

webapp.services=scheduler,logging,session,authentication,jsp,file

# service aliases
webapp.SessionManager=session
webapp.ResourceAuthenticator=authentication
webapp.PageTranslator=jsp

# Default service class for running web-apps.
# To enable these deprecated ServletContext methods:
#    Servlet getServlet(String name)
#    Enumeration getServlets()
#    Enumeration getServletNames()
# use allaire.jrun.servlet.JRunSE instead.
webapp.service-class=allaire.jrun.servlet.WebappService

webapp.defaultservlet=file

########################################################################
## java properties
########################################################################

# shared library path for JNI libraries
servlet.jnipath=
user.jnipath=

# Classpath
servlet.classpath={jrun.rootdir}/lib/jsp.jar;{jrun.rootdir}/lib/ssi.jar;{jrun.rootdir}/lib/wddx.jar;{jrun.rootdir}/lib/xt.jar;{jrun.rootdir}/lib/rhino.jar

# extra virtual machine args
servlet.javaargs=


########################################################################
## session services
########################################################################

# Session management service.
# to enable these deprecated methods:
#     Enumeration SessionContext.getIds()
#     HttpSession getSession(String id)
# use allaire.jrun.session.JRunSessionService instead.
session.class=allaire.jrun.session.WebappSessionService

# Invalidation time is the default session inactivity timeout.
# If the session is not accessed, it will be expired.  This value
# can be set on each session by calling HttpSession.setMaxInactiveTime()
# specified in minutes.
session.invalidationtime=30

# true if sessions should be persisted when the server is terminated.
session.persistence=true

# What to do with session data when class files change. Values are
# reload, drop, or ignore. Only valid if session.persistence=true
session.persistence.classchange=reload

# true if sessions should be swapped out of memory to a storage service
session.swapping=false

# How often the session pool should be checked for sessions that should
# be swapped to a storage service, specified in seconds
session.swapinterval=10

# The approximate number of sessions that will be allowed in memory
# before swapping to a storage service. Due to delays in the swapinterval
# and sessions that may not be serializable, the actual maximum may
# differ. If 0, all session data will be written out immediately upon
# the completion of the request. session.swapping must be 'true' in order
# for this property to take effect.
session.maxresident=9999999

# The name of the storage service to use for session persistence
# and/or swapping
session.persistence.service=file
session.persistence.file.class=allaire.jrun.session.FileSessionStorage
session.persistence.file.path={webapp.rootdir}/WEB-INF/sessions

# JDBCSessionStorage provider
session.persistence.jdbc.class=allaire.jrun.session.JDBCSessionStorage
session.persistence.jdbc.JDBCDriver=sun.jdbc.odbc.JdbcOdbcDriver
session.persistence.jdbc.JDBCConnectionURL=jdbc:odbc:JRunSessions
# The table name to use
session.persistence.jdbc.JDBCSessionTable=sessions
# A key prefix to keep all server keys unique
session.persistence.jdbc.JDBCSessionIDPrefix={jrun.server.name}-
# The column names to use. The JDBCSessionIDColumn must be a VARCHAR
# type while the JDBCSessionDataColumn must be able to handle
# binary long data
session.persistence.jdbc.JDBCSessionIDColumn=id
session.persistence.jdbc.JDBCSessionDataColumn=data

# settings for cookie-based sesssion tracking
session.cookie.maxage=-1
session.cookie.secure=false
session.cookie.active=true
session.cookie.domain=
session.cookie.comment="JRun Session Tracking Cookie"
session.cookie.path=/
session.cookie.name=jsessionid


########################################################################
## jcpservices
########################################################################

# service class & info
jcp.class=allaire.jrun.jrpp.ProxyService

# endpoint properties
jcp.endpoint.main.interface=*
jcp.endpoint.main.bindaddress=127.0.0.1
jcp.endpoint.main.port=
jcp.endpoint.main.timeout=300
jcp.endpoint.main.min.threads=1
jcp.endpoint.main.active.threads=100
jcp.endpoint.main.max.threads=1000
jcp.MetricsManager=monitor


########################################################################
## web services
########################################################################

# service class & info
web.class=allaire.jrun.http.WebService


# path settings for web server 
# ie: web.paths./=/usr/local/apache/htdocs

# endpoint properties
web.endpoint.main.bindaddress=*
web.endpoint.main.interface=*
web.endpoint.main.port=
web.endpoint.main.timeout=300
web.endpoint.main.min.threads=1
web.endpoint.main.active.threads=100
web.endpoint.main.max.threads=1000
web.MetricsManager=monitor
web.keepalive.active=true


########################################################################
## zeus ZDAC service
########################################################################

# service class & info
zeus.class=allaire.jrun.zeus.ZeusService

# endpoint properties
zeus.endpoint.main.bindaddress=127.0.0.1
zeus.endpoint.main.interface=*
zeus.endpoint.main.port=
zeus.endpoint.main.timeout=300
zeus.endpoint.main.min.threads=1
zeus.endpoint.main.active.threads=100
zeus.endpoint.main.max.threads=1000
zeus.MetricsManager=monitor
zeus.keepalive.active=true

########################################################################
## jsp services
########################################################################

# checkjsa - allows you to use global.jsa for session and app initialization
# logger - have JSP use its own logger
# compiler - which compilation service to use (see below)
# scripting.engines - scripting engines
jsp.class=allaire.jrun.jsp.JSPServlet
jsp.checkjsa=false
jsp.logger=
jsp.compiler=jsp.jikes
jsp.scripting.engines=javascript
jsp.scripting.javascript=allaire.jrun.scripting.RhinoRunner

# Setup page compiler services
#
# Special characters:
#           %f    filename
#           %c    classpath (java classpath to use
#           %d    codepath (where to place compiled class files)
#
# For example: 
#
# compiler=javac -nowarn -classpath %c -d %d %f
#  or
# compiler=jvc /nowarn /nologo /cp:p %c /d %d %f
# default is to use the internal compiler via tools.jar
#
# Basic posix regular expressions can be used to 
# allow JSP to pull out information from a compiler error and
# display useful error messages pointing to the source of the error
# in the JSP page.

jsp.javac-in-proc.class=allaire.jrun.scripting.JavaCompilerService

jsp.jikes.class=allaire.jrun.scripting.JavaCompilerService
jsp.jikes.compiler={jrun.rootdir}/bin/jikesw +E -g -nowarn -d %d %f
jsp.jikes.error.regexp=\\([^:]*\\):\\([0-9]*\\):[0-9]*:[0-9]*:[0-9]*:\\([^\n]*\\)[\n$]
jsp.jikes.error.regexp.filesubexpr=1
jsp.jikes.error.regexp.linesubexpr=2
jsp.jikes.error.regexp.errorsubexpr=3

# Map *.jsp to jsprt for deployed or precompiled JSP pages
jsprt.class=allaire.jrun.jsp.JSPRuntime

######################################################################
# JDBC DataSource Binding Service

jdbc.class=allaire.jrun.sql.JdbcBindingService

#########################################################################
# JNDI Service
jndi.class=allaire.jrun.jndi.JNDIService

#######################################################################
# JMS Queue/Topic Binding Service
jms.class=allaire.jrun.jms.JmsBindingService

#######################################################################
# JavaMail Session Binding Service
mail.class=allaire.jrun.mail.MailBindingService

#######################################################################
# URL Binding Service
url.class=allaire.jrun.url.UrlBindingService


########################################################################
## misc JRun properties
########################################################################

# initial pool size for SingleThreadModel servlets.  JRun will create
# as many instances of this class as it needs.  This is the number of
# automatically created instances.  The initial pool is created when
# the servlet is first accessed, or at system startup time if the servlet
# is configured to preload.
# ED: 2.3 used to be 6 by default.  JRun will
# allways create one extra instance the first time (so it can use instanceof)
webapp.singlethread.initpoolsize=1

# login/authentication service (new for 3.0)
authentication.class=allaire.jrun.servlet.ResourceAuthenticator
authentication.service=propfile
authentication.propfile.class=allaire.jrun.security.PropertyFileAuthentication
authentication.propfile.filename={jrun.rootdir}/lib/users.properties


### mimeservlets.properties (mime-type chaining)
# syntax is: webapp.mime-servlet.[mimetype]=[servletName]
#webapp.mime-servlet.text/html=LowerCaseFilter

### mime.properties (mime extensions)
# syntax will be:  webapp.mimetype.[extension]=[mimetype]
webapp.mime-mapping.html=text/html
webapp.mime-mapping.htm=text/html
webapp.mime-mapping.txt=text/plain
webapp.mime-mapping.gif=image/gif
webapp.mime-mapping.jpg=image/jpeg
webapp.mime-mapping.jpeg=image/jpeg
webapp.mime-mapping.tiff=image/tiff
webapp.mime-mapping.tif=image/tiff
webapp.mime-mapping.class=application/octet-stream
webapp.mime-mapping.au=audio/basic
webapp.mime-mapping.ra=audio/x-pn-realaudio
webapp.mime-mapping.ram=audio/x-pn-realaudio
webapp.mime-mapping.wav=audio/wav
webapp.mime-mapping.mpg=video/mpeg
webapp.mime-mapping.mpeg=video/mpeg
webapp.mime-mapping.qt=video/quicktime
webapp.mime-mapping.mov=video/quicktime
webapp.mime-mapping.ps=application/postscript
webapp.mime-mapping.wrl=x-world/x-vrml
webapp.mime-mapping.pac=application/x-ns-proxy-autoconfig
webapp.mime-mapping.pdf=application/pdf

#
# Web Application temporary working directory.
# This directory is retrievable by servlets using:
# File f = (File)getServletContext("javax.servlet.context.tempdir");
#
webapp.tempdir={jrun.server.rootdir}/tmp/{webapp.name}

# Web application reloadable classpath.
# This classpath accepts application resource URIs for loading classes.
# These resource URIs will typically exist under the /WEB-INF namespace.
# Do not put external filesystem paths in this classpath because they will not
# be found. Use virtual resource mappings to configure resource URIs that
# point to external filesystem paths.
#
webapp.classpath=/WEB-INF/classes;/WEB-INF/lib;/WEB-INF/jsp

### pathtrans.properties
webapp.pathcount=0
webapp.path0.from=/virtualdir
webapp.path0.to=/realdir

# The number of seconds delay before checking for a modified servlet.
# Set to -1 to disable the automatic reloading of modified servlets,
# which will improve performance.
reload.checkInterval=1

########################################################################
## general servlet/service settings
########################################################################

# syntax is:
#   [alias].class=[class]
#   [alias].[initParam1]=[value1]
#   ...
file.class=allaire.jrun.file.FileServlet
file.browsedirs=true

ssifilter.class=allaire.jrun.ssi.SSIFilter
urlfilter.class=com.allaire.URLRewriterFilter
template.class=allaire.jrun.template.Template
templatefilter.class=allaire.jrun.template.TemplateFilter
invoker.class=allaire.jrun.servlet.Invoker
JRunStats.class=allaire.jrun.servlets.JRunStats

# Here is an example of how to configure the JRun Servlet connector.
# this allows JRun's to be distributed across processes or across
# the network
#remote.class=allaire.jrun.connector.JRunConnector
#remote.proxyhost=127.0.0.1
#remote.proxyport=8082

### taglet.properties (dynamic taglets in ssi)
# Note- this feature is deprecated in JRun 3.0. The functionality offered
#       by taglets can be replaced with JSP 1.1 tag libraries.
# Property Syntax: ssifilter.[tag].DynamicTaglet=[servlet name]
#ssifilter.createtable.DynamicTaglet=TagletDemoServlet
#ssifilter.datetag.DynamicTaglet=DateServlet

### codetaglet.properties (SSITaglets)
# [instance].SSITaglet=[class name]
#ssifilter.ssimail.SSITaglet=com.livesoftware.jrun.plugins.ssi.taglets.SSIMail


########################################################################
## rules
########################################################################

webapp.servlet-mapping./servlet=invoker
webapp.servlet-mapping.*.jrun=invoker
webapp.servlet-mapping.*.shtml=ssifilter
webapp.servlet-mapping.*.jsp=jsp
webapp.servlet-mapping.*.thtml=template

########################################################################
## method timing
########################################################################

# Enable method timing
timing.enabled=false

timing.excludecalls=java.*,javax.*,sun.*,org.omg.CORBA.*
timing.includecalls=java.sql.*

# Define the logger used to process messages.
# By default, messages are written to the log file for the 
# JRun server executing the servlet.
# These properties control the message format.

# Define the logger name.
timing.logging.class=simplelogger

# Specify the properties for the simple logger which will
# route the method timing messages to the system logger
timing.simplelogger.class=allaire.jrun.methodTimer.SimpleLogger
timing.simplelogger.level=info
timing.simplelogger.entermethod=ENTER
timing.simplelogger.exitmethod=EXIT
timing.simplelogger.beforemethodcall=CALLENTER
timing.simplelogger.aftermethodcall=CALLEXIT
timing.simplelogger.delimeter=,

# Specify the properties for the thread logger which will
# route the method timing messages to thread-local storage.
# Use the ThreadLogger in conjunction with the
# allaire.jrun.servlets.JRunStats servlet to view output
timing.threadlogger.class=allaire.jrun.methodTimer.ThreadLogger

# Specify the name of the classes to instrument
timing.classes=HttpServlet,SnoopServlet

# Specify the settings for instrumentation for HttpServlet
timing.HttpServlet.class=javax.servlet.http.HttpServlet
timing.HttpServlet.methods=*
timing.HttpServlet.calls=*,javax.servlet.http.*
timing.HttpServlet.doGet.calls=*
timing.HttpServlet.subclasses=true

timing.SnoopServlet.class=SnoopServlet
timing.SnoopServlet.methods=*
timing.SnoopServlet.calls=*,javax.servlet.http.*

########################################################################
## debug services
########################################################################

# service class & info
debug.class=allaire.jrun.debug.StackManager

########################################################################
## HTTP Sniffer service. The 'sniffer' service must be added to the
## list of jrun.services in order to be enabled
########################################################################
sniffer.class=allaire.jrun.http.Sniffer
sniffer.port=8101
sniffer.loglevel=info
sniffer.logcontent=true
sniffer.target.host=localhost
sniffer.target.port=80

# Makef jrun taglib available for all apps
web-app.taglib-uri.jruntags=/WEB-INF/jrun/jruntags.jar
webapp.path-mapping./WEB-INF/jrun/jruntags.jar={jrun.rootdir}/servers/lib/jruntags.jar

########################################################################
## Default values for JMC to display
########################################################################
web-app.session-config.session-timeout=30
web-app.welcome-file-list=index.jsp

# list of services to start
ejb.services=ejb

# shared library path for JNI libraries
ejb.jnipath=

# Classpath
ejb.classpath={jrun.rootdir}/lib/ejipt.jar;{jrun.rootdir}/lib/ejipt_client.jar;{jrun.rootdir}/lib/ejipt_tools.jar

# extra virtual machine args
ejb.javaargs=

########################################################################
## ejb service
# service init-parameters:
#   ejb.ejipt.classname  - the classname of the allaire.ejipt.Ejipt implementation
#   ejb.logger.name      - the name of the logger to use for logging messages
########################################################################
ejb.class=allaire.jrun.ejb.EjbService
ejb.description=JRun EJB Service
ejb.logger.name=ejb
